package com.iman.sumer.service.student;

import java.util.Map;

import com.iman.common.support.Page;
import com.iman.sumer.vo.CommentVo;
import com.iman.sumer.vo.CourseClassmateVo;
import com.iman.sumer.vo.CourseCtgVo;
import com.iman.sumer.vo.CourseNoteVo;
import com.iman.sumer.vo.CourseTeacherVo;
import com.iman.sumer.vo.CourseVo;
import com.iman.sumer.vo.ExamVo;
import com.iman.sumer.vo.HomeworkVo;
import com.iman.sumer.vo.ResourceVo;
import com.iman.sumer.vo.StudyCourseVo;
import com.iman.sumer.vo.student.StudyDmsgVo;
import com.iman.sumer.vo.student.StudyRemarkVo;

/**
 * @description 我的课程Service层接口
 * @author huangt
 * @date 2014年12月24日
 */
public interface CourseService {

	/**
	 * @description 获得所有课程列表
	 * @param map
	 * @return Page<CourseVo>
	 * @throws Exception 
	 * @author huangt  2014年12月24日
	 */
	public Page<CourseVo> getAllCourseList(Map<String, Object> map) throws Exception;
	
	/**
	 * @description 根据ID获得教师信息
	 * @param id
	 * 			教师ID
	 * @return CourseTeacherVo
	 * @throws Exception 
	 * @author huangt  2015年1月4日
	 */
	public CourseTeacherVo getCourseTeacherById(long id) throws Exception;
	
	/**
	 * @description 根据类型获得课程列表
	 * @param map
	 * @return Page<CourseVo>
	 * @throws Exception 
	 * @author huangt  2014年12月25日
	 */
	public Page<CourseVo> getCourseListByType(Map<String, Object> map) throws Exception;
	
	/**
	 * @description 获得专题课程的课程列表
	 * @param map
	 * @return Page<CourseVo>
	 * @throws Exception 
	 * @author huangt  2014年12月26日
	 */
	public Page<CourseVo> getTopicCourseList(Map<String, Object> map) throws Exception;
	
	/**
	 * @description 获得课程课件列表
	 * @param map
	 * @return Page<CourseCtgVo>
	 * @throws Exception 
	 * @author huangt  2014年12月26日
	 */
	public Page<CourseCtgVo> getCourseCtgList(Map<String, Object> map) throws Exception;
	
	/**
	 * @description 获得课时作业列表
	 * @param map
	 * @return Page<HomeworkVo>
	 * @throws Exception 
	 * @author huangt  2014年12月30日
	 */
	public Page<HomeworkVo> getCtgHomework(Map<String, Object> map) throws Exception;
	
	/**
	 * @description 获得课时考试列表
	 * @param map
	 * @return Page<ExamVo>
	 * @throws Exception 
	 * @author huangt  2014年12月30日
	 */
	public Page<ExamVo> getCtgExam(Map<String, Object> map) throws Exception;
	
	/**
	 * @description 获得课时资源列表
	 * @param map
	 * @return Page<ResourceVo>
	 * @throws Exception 
	 * @author huangt  2014年12月31日
	 */
	public Page<ResourceVo> getCtgResource(Map<String, Object> map) throws Exception;
	
	/**
	 * @description 获得课程笔记列表
	 * @param map
	 * @return Page<CourseNoteVo>
	 * @throws Exception 
	 * @author huangt  2014年12月26日
	 */
	public Page<CourseNoteVo> getCourseNoteList(Map<String, Object> map) throws Exception;
	
	/**
	 * @description 获得课程同学列表
	 * @param map
	 * @return Page<CourseClassmateVo>
	 * @throws Exception 
	 * @author huangt  2014年12月29日
	 */
	public Page<CourseClassmateVo> getCourseClassmateList(Map<String, Object> map) throws Exception;
	
	/**
	 * @description 获得课程评论列表
	 * @param map
	 * @return Page<CommentVo>
	 * @throws Exception 
	 * @author huangt  2014年12月29日
	 */
	public Page<CommentVo> getCourseCommentList(Map<String, Object> map) throws Exception;
	
	/**
	 * @description 根据课件获得资源列表
	 * @param map
	 * @return Page<ResourceVo>
	 * @throws Exception 
	 * @author huangt  2015年1月4日
	 */
	public Page<ResourceVo> getCourseResList(Map<String, Object> map) throws Exception;
	
	/**
	 * 
	 *  Function: getStudyingCourseList
	 *  功能说明：获取用户当前正在学习的课程列表
	 *	 使用说明：
	 *  @author  Lihuai  DateTime Dec 24, 2014-11:28:22 PM
	 *	返回类型: Page<CourseVo>    
	 *  @param 
	 *  @return Page<CourseVo>
	 */
	public Page<StudyCourseVo> getStudyingCourseList(Map<String, Object> params);
	/**
	 * @description 获得所有学习动态消息表
	 * @param map
	 * @return Page<StudyDmsgVo>
	 * @throws Exception 
	 * @author syd  2014年12月28日
	 */
	Page<StudyDmsgVo> getAllStudyDmsgList(Map<String, Object> map)
			throws Exception;
	/**
 	 * @description 获得user所有学习动态消息表
 	 * @param map
 	 * @return Page<StudyRemarkVo>
 	 * @throws Exception 
 	 * @author syd  2014年12月29日
 	 */
	Page<StudyRemarkVo> getStudyRemarkList(Map<String, Object> map)
			throws Exception;

}
